地震学SAC常用命令教程

Author:Hongyu Xiao

Graduate Student
University of Illinois at Urbana–Champaign
August, 2020

Based on SAC manual . Here.


如果有遇到问题的话

请联系我!

邮箱是:hongyu.xiao@hotmail.com

标题开头为: PEK_Summer_Question

例如 PEK_Summer_Question anaconda无法下载


SAC 部分学习预期

* 了解如何读取和查看sac文件

* 了解如何查看和更改header

* 了解如何去除仪器响应等常用操作

* 了解何如保存

* 脚本调用SAC


1. SAC 是什么 ?

Seismic Analysis Code,简写为 SAC,是天然地震学领域使用最广泛的数据分析软件包之一。

SAC 是一个软件,主要在命令行下操作,通过各种命令来处理时间序列数据,尤其是地震波形数据,同时也提供了一个简单的图形界面,使得用户可以方便地查看波形并拾取震相。

SAC 同时还是一种数据格式,定义了以何种方式存储时间序列数据及其元数据。 SAC 格式是地震学的标准数据格式之一,有很多工具可以实现 SAC 格式与其它地震数据格式间的相互转换


本课程的SAC部分程序被嵌入代码内部,这里不介绍SAC的相关安装,只对相关常用操作进行简介

2. SAC 中数据读取和保存

SAC 的读命令是read(简写为 r),写命令为write(简写为 w)。

以下面为例

SAC Read

SAC 中,在指定文件名的时候,可以使用绝对路径,也可以使用相对路径。可以使用其全名,也可以使用通配符。

SAC 的通配符与 Unix 定义的通配符一致

SAC Read

将数据读入到内存中之后,对内存中的数据做一些处理,然后就需要将内存中的数据写回到磁盘中:

SAC Write

3. SAC 中数据绘制

SAC 中有四个常用的绘图命令,分别是plot、 plot1 、 plot2、 plotpk。这里只介绍最基础的 绘图命令

SAC Plot

这里使用p,就是指的plot

这里会将读入的文件依次画出,但是一次只会画出一个,需要按回车进行切换,而且只能依次向后切换。

plot1 命令会绘制内存块中的所有波形数据,在一个窗口中一次显示多个波形,这些波形共用一个 X 轴(时间轴),但拥有单独的 Y 轴。

SAC Plot

4. SAC 中header查看及更改

在SAC中,lh 或者 listhdr可以列出SAC文件中所有的header信息

SAC Plot

列出开始和结束时间

SAC Plot

列出指定的SAC文件中header信息

SAC Plot


在SAC中,ch或者chnhdr可以更改header信息

SAC Plot

下面是例子

SAC Plot

所有的header的信息可以参考这里


5. 常用操作及去除仪器响应

去均值、去线性趋势和波形尖灭

rmean、 rtrend、 taper 命令

以下是例子,fg是指生成一个波形

SAC Plot

去除仪器响应

transfer 命令,corner frequency可以自己定义

以下是例子,RESP 方法

SAC Plot

6. 脚本调用SAC

Bash 中调用 SAC

SAC中的编程较为简陋,我们可以利用其他脚本进行SAC调用以提高灵活性

以下是例子

SAC_Plot

脚本中从“sac << EOF”开始到“EOF”的全部内容,都会被 Bash 传递给 SAC

SAC会逐一解释并执行每行命令。

Bash 具有更灵活的条件判断和循环控制功能,比如下面的例子进行批量处理

SAC_Plot


  • 以上给出的为Bash的例子,事实上,除了Bash以外,我们还可以使用perl,python或者其他脚本进行sac的调用,但是事实上如果想以相对少的代码量实现常用的比如修改事件信息,进行滤波,去除仪器响应等,Bash和awk结合是相对便捷的选择。